Engineers use compression (also called source coding or source encoding) to reduce the bit rate of digital video. Compression decreases the cost of storing and transmitting video information by converting the information into a lower bit rate form. Decompression (also called decoding) reconstructs a version of the original information from the compressed form. A “codec” is an encoder; decoder system.
Over the last two decades, various video codec standards have been adopted, including the 11.261, H.262 (MPEG-2 or ISO/IEC 13818-2), 11.263 and 11.264 (AVC or ISO/TEC 14496-10) standards and the MPEG-1 (ISO/IEC 11172-2), MPEG-4 Visual (ISO/TEC 14496-2) and SMPTE 421M standards. More recently, the HEVC standard is under development. A video codec standard typically defines options for the syntax of an encoded video bitstream, detailing parameters in the bitstream when particular features are used in encoding and decoding. In many cases, a video codec standard also provides details about the decoding operations a decoder should perform to achieve correct results in decoding. Aside from codec standards, various proprietary codec formats define other options for the syntax of an encoded video bitstream and corresponding decoding operations.
One type of parameter in a bitstream is a quantization parameter (“QP”). During encoding, an encoder sets values of QP to adjust quality and bitrate. In general, for a lower value of QP, the quality of the encoded video is higher but more bits are consumed. On the other hand, for a higher value of QP, the quality of the encoded video is lower and fewer bits are consumed. A decoder uses QP values when reconstructing video content from the encoded video.
A video source such as a camera, animation output, screen capture module, etc. typically provides video that is converted to a format such as a YUV format. A YUV format includes a luma (or Y) component with sample values representing brightness values as well as multiple chroma components with sample values representing color difference values. The precise definitions of the color difference values (and conversion operations to/from YUV color space to another color space such as RGB) depend on implementation. In general, a luma/chroma color space can be any color space with a luma (or luminance) component and one or more chroma (or chrominance) components, including YUN, Y′UV, YIQ, Y′IQ and YDbDr as well as variations such as YCbCr and YCoCg, where the Y term represents a luma component and the other terms represent chroma components.
For some codec standards and formats, an encoder can set different values of QP for a luma component and chroma components. In this way, the encoder can control how quantization is performed for different color components, and thereby regulate quality and bitrate between components. Prior approaches to controlling and using QP values for chroma components have various shortcomings, however, including a lack of fine-grained control in high QP situations, and failure to provide an appropriate level of responsiveness in other decoding operations.